package com.um2.simplexe.client.ui.exec;

import java.awt.Component;

import javax.swing.JPanel;

import com.um2.simplexe.client.ui.EntryPoint.FenetreApplication;
import com.um2.simplexe.client.ui.util.controleUI.actionsGeneriques.Evenements;
import com.um2.simplexe.client.ui.util.controleUI.actionsGeneriques.SocketClient;
import com.um2.simplexe.client.ui.zone.Zone1;
import com.um2.simplexe.client.ui.zone.Zone2;
import com.um2.simplexe.client.ui.zone.Zone3;

public class Methodes implements ToutesLesMethodesClient {

	

	public void fermerLApplication() {
		Evenements.quitterLAppli() ;
	}

	/**
	 * envoie une requette au serveur courant.
	 */
	public String requetteAuServeur(String req) {
		SocketClient sc = new SocketClient() ;
		return sc.envoi(req) ;
	}


	
	public void ajouterALaZone1(String nom,JPanel j) {
		Zone1.ajouterPanel(nom,j) ;
	}

	public void ajouterALaZone2(String nom,JPanel j) {
		Zone2.ajouterPanel(nom,j) ;
	}

	public void ajouterALaZone3(String nom,JPanel j) {
		Zone3.ajouterPanel(nom,j) ;
	}



	/**
	 * retire de la zone 1 l'onglet numero i.
	 */
	public void retirerALaZone1(int i) {
		Zone1.enleverPanel(i) ;
	}

	/**
	 * retire de la zone 2 l'onglet numero i.
	 */
	public void retirerALaZone2(int i) {
		Zone2.enleverPanel(i) ;
	}


	/**
	 * retire de la zone 3 l'onglet numero i.
	 */
	public void retirerALaZone3(int i) {
		Zone3.enleverPanel(i) ;
	}



	/**
	 * rend le nombre d'onglets de la zone 1.
	 */
	public int getCountZone1() {
		return Zone1.getNombrePanels() ;
	}

	/**
	 * rend le nombre d'onglets de la zone 2.
	 */
	public int getCountZone2() {
		return Zone2.getNombrePanels() ;
	}

	/**
	 * rend le nombre d'onglets de la zone 3.
	 */
	public int getCountZone3() {
		return Zone3.getNombrePanels() ;
	}

	/**
	 * rend le panneau de l'onglet i de la zone 1.
	 */
	public Component getZone1Panel(int i) {
		return Zone1.getPanel(i);
	}

	/**
	 * rend le panneau de l'onglet i de la zone 2.
	 */
	public Component getZone2Panel(int i) {
		return Zone2.getPanel(i);
	}

	/**
	 * rend le panneau de l'onglet i de la zone 3.
	 */
	public Component getZone3Panel(int i) {
		return Zone3.getPanel(i);
	}

	/**
	 * rend le panneau courant de la zone 1.
	 */
	public Component getZone1Panel() {
		return Zone1.getCurrentPanel() ;
	}

	/**
	 * rend le panneau courant de la zone 2.
	 */
	public Component getZone2Panel() {
		return Zone2.getCurrentPanel() ;
	}

	/**
	 * rend le panneau courant de la zone 3.
	 */
	public Component getZone3Panel() {
		return Zone3.getCurrentPanel() ;
	}

	
	
	
	public int getZone1Indice() {
		return Zone1.getCurrentPanelIndice();
	}

	public int getZone2Indice() {
		return Zone2.getCurrentPanelIndice();
	}

	public int getZone3Indice() {
		return Zone3.getCurrentPanelIndice();
	}


	
	
	/**
	 * rend le nom sur la barre de titre
	 */
	public String getTitreAppli() {
		return FenetreApplication.getInstance().getTitle() ;
	}

	/**
	 * change le nom sur la barre de titre
	 */
	public void setTitreAppli(String titre) {
		FenetreApplication.getInstance().setTitle(titre) ;
	}

	/**
	 * renvoie la partie nord d'une zone, sinon null .
	 */
	public JPanel getHautDeZone(int numeroZone) {
		if (numeroZone==1)
		{
			return Zone1.getNord() ;
		}
		if (numeroZone==2)
		{
			return Zone2.getNord() ;
		}
		if (numeroZone==3)
		{
			return Zone3.getNord() ;
		}
		return null ;
	}

	public String getStatusAppli() {
		return FenetreApplication.getInstance().getStatus() ;
	}
	public void setStatusAppli(String titre) {
		FenetreApplication.getInstance().setStatus(titre) ;
	}


	public int getStatusAppliPourcent() {
		return FenetreApplication.getInstance().getStatusPourcent() ;
	}
	public void setStatusAppliPourcent(int pourcentage) {
		FenetreApplication.getInstance().setStatusPourcent(pourcentage) ;
	}

	public String envoyerMessage(String msg) {
		return this.requetteAuServeur(msg) ;
	}

	public String getIPServeur() {
		return SocketClient.getHost();
	}

	public int getPortServeur() {
		return SocketClient.getPort();
	}


	public void setIPServeur(String serveur) {
		SocketClient.setHost(serveur) ;
	}

	public void setPortServeur(int port) {
		SocketClient.setPort(port) ;
	}
	
}
